What is emoji-regex?
The emoji-regex npm package provides a regular expression to match all Emoji-only symbols as per the Unicode Standard. This package is useful for processing text that contains emojis, allowing developers to identify, validate, or manipulate emojis within strings.
What are emoji-regex's main functionalities?
Matching emojis in a string
This code sample demonstrates how to use emoji-regex to find all emojis in a given string. The regex is executed against a string containing emojis, and it will match each emoji character or sequence.
/(emojiRegex())/g.exec('I ❤️ emoji!')
Replacing emojis in a string
This code sample shows how to replace all emojis in a string with a specific word or character. In this case, every emoji in the string is replaced with the word 'emoji'.
'I ❤️ emoji!'.replace(emojiRegex(), 'emoji')
Counting emojis in a string
This code sample is used to count the number of emojis in a string. The match function returns an array of all emojis found, and the length property of the array indicates the total number of emojis.
'👍👍🏿'.match(emojiRegex()).length
Other packages similar to emoji-regex
emojione
Emojione is a package that provides emoji conversion and detection. It includes functionalities to convert unicode emojis to shortnames, images, and vice versa. It is more feature-rich compared to emoji-regex, which focuses solely on regex matching.
node-emoji
Node-emoji is a package that allows for simple emoji handling and conversion in Node.js. It can convert emoji names to unicode and unicode to names, similar to emojione but with a simpler API. Unlike emoji-regex, it does not provide a regex pattern for matching emojis.
emoji-aware
Emoji-aware is a package that splits strings into arrays of Unicode emoji and text. It is useful for separating emojis from other text, but it does not provide regex functionality like emoji-regex.
emoji-regex
emoji-regex offers a regular expression to match all emoji symbols and sequences (including textual representations of emoji) as per the Unicode Standard. It’s based on emoji-test-regex-pattern, which generates (at build time) the regular expression pattern based on the Unicode Standard. As a result, emoji-regex can easily be updated whenever new emoji are added to Unicode.
Since each version of emoji-regex is tied to the latest Unicode version at the time of release, results are deterministic. This is important for use cases like image replacement, where you want to guarantee that an image asset is available for every possibly matched emoji. If you don’t need a deterministic regex, a lighter-weight, general emoji pattern is available via the emoji-regex-xs package that follows the same API.
Installation
Via npm:
npm install emoji-regex
In Node.js:
const emojiRegex = require('emoji-regex');
const text = `
\u{231A}: ⌚ default emoji presentation character (Emoji_Presentation)
\u{2194}\u{FE0F}: ↔️ default text presentation character rendered as emoji
\u{1F469}: 👩 emoji modifier base (Emoji_Modifier_Base)
\u{1F469}\u{1F3FF}: 👩🏿 emoji modifier base followed by a modifier
`;
const regex = emojiRegex();
for (const match of text.matchAll(regex)) {
const emoji = match[0];
console.log(`Matched sequence ${ emoji } — code points: ${ [...emoji].length }`);
}
Console output:
Matched sequence ⌚ — code points: 1
Matched sequence ⌚ — code points: 1
Matched sequence ↔️ — code points: 2
Matched sequence ↔️ — code points: 2
Matched sequence 👩 — code points: 1
Matched sequence 👩 — code points: 1
Matched sequence 👩🏿 — code points: 2
Matched sequence 👩🏿 — code points: 2
For maintainers
How to update emoji-regex after new Unicode Standard releases
-
Update emoji-test-regex-pattern as described in its repository.
-
Bump the emoji-test-regex-pattern dependency to the latest version.
-
Update the Unicode data dependency in package.json
by running the following commands:
npm uninstall @unicode/unicode-13.0.0
npm install @unicode/unicode-14.0.0 --save-dev
-
Generate the new output:
npm run build
-
Verify that tests still pass:
npm test
How to publish a new release
-
On the main
branch, bump the emoji-regex version number in package.json
:
npm version patch -m 'Release v%s'
Instead of patch
, use minor
or major
as needed.
Note that this produces a Git commit + tag.
-
Push the release commit and tag:
git push && git push --tags
Our CI then automatically publishes the new release to npm.
Author
License
emoji-regex is available under the MIT license.